Skip to content

feat(backmerge): share the back-merge, and decide its mechanism by measurement - #56

Merged
usetheodev merged 1 commit into
mainfrom
workspace
Sep 5, 2026
Merged

feat(backmerge): share the back-merge, and decide its mechanism by measurement#56
usetheodev merged 1 commit into
mainfrom
workspace

Conversation

@usetheodev

Copy link
Copy Markdown
Contributor

Closes #53, which I filed saying the decision was not mine to make silently. It was — once the
premise behind it was checked.

The premise that blocked it, and why it fell

#53 said unifying these "requires deciding whether a back-merge may bypass review". That framing
assumed workspace is reviewed. Measured 2026-09-05:

workspace branch protection, all ten consumers: none

So a direct push bypasses nothing, because there is nothing there to bypass. The question I said
belonged to a human turned out to be a question about a fact, and the fact says the two mechanisms
are equivalent on the axis I was worried about.

What actually decided it

The opposite worry, and it is the one with data. A pull request only helps if somebody merges it,
and an unmerged one leaves the branch exactly as far behind as no mechanism at all.

repository back-merge PRs merged same day
theokit-sdk #511 #516 #519 #528 #540 #548 6/6 5/6
theokit-gateways #108 #111 #114 #117 #120 #121 6/6 5/6

The failure mode did not happen. So the pull request keeps its advantage — a reviewable record of
what came back — at no observed cost, and that is the version shared here.

The push mechanism is not wrong, and this is not a verdict on it. With two working options,
the one that leaves a record is the one worth being everybody's default.

Shape

One input, target-branch, defaulting to workspace. Every current caller uses that; a
repository with a second permanent branch calls the workflow again rather than growing a matrix
inside it.

The theokit-sdk implementation is the base — its steady-state message ("nothing to back-merge")
and its already-open-PR check both survive, along with the note that workspace is a live
checkout so merging may need a clean tree.

Also in this branch

fix(setup) removing registry-url (#55), already described there.

Follow-up

Converting the three callers is a separate change per repository, after v1 serves this. The file
name is unified at the same time — release-backmerge.yml and backmerge.yml being the same job
under two names is how this counted as two instances instead of three for as long as it did.

…asurement

Three repositories had a back-merge and two mechanisms: theokit pushed straight
to workspace, theokit-sdk and theokit-gateways opened a pull request. Three
instances of one job under two file names, which is also why a grep for one of
them reported two rather than three.

The objection that had left this undecided -- that a direct push bypasses review
-- is false. Measured 2026-09-05: workspace carries no branch protection in ANY
of the ten consumers, so neither mechanism bypasses anything.

What decided it was the opposite worry, also measured. A pull request only helps
if somebody merges it. Every back-merge PR in both repositories was merged, all
but one on the day it was opened (sdk #511 #516 #519 #528 #540 #548; gateways
#108 #111 #114 #117 #120 #121). The failure mode did not happen, so the pull
request keeps its advantage -- a reviewable record -- at no observed cost.

One input, target-branch, defaulting to workspace: every current caller uses it,
and a repository with a second permanent branch calls this again rather than
growing a matrix here.

actionlint and zizmor clean.
@usetheodev
usetheodev merged commit dc50312 into main Sep 5, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

backmerge exists in three repositories with two different mechanisms — one pushes to workspace, two open a pull request

2 participants